Linux系统中设置错误路由后导致网络不通

问题描述

在服务器中设置路由时,可能由于设置错误导致网络出现问题,具体问题场景如下所示:

  • 服务器内部使用ping命令时,连接服务器网关失败。
  • 使用ping命令连接同网段中的其他不同服务时失败。

问题原因

由于您使用Docker等服务导致在路由表中变更了路由信息。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
  1. 在服务器中执行以下命令,查看路由表信息。
    route -n
    系统显示类似如下。
  2. 根据路由表中的信息,确认出现问题的网卡接口。
  3. 执行以下命令,对出现问题的网卡接口进行抓包。
    说明:网卡接口可能为eth0或eth1,具体以现场实际情况为准。
    tcpdump -v -i [$Iface]
    说明:[$Iface]为出现问题的网卡接口。
    系统显示类似如下,该案例中的数据包显示本机始终在内网网卡中请求获取公网网关的MAC广播报文,由于是在内网网卡中,所以公网网关并没有得到请求报文,因此本机没有获取返回的报文,导致连接网关失败。
  4. 使用route del命令,删除错误的路由信息。
  5. 使用route add命令,添加正确的路由信息。

更多信息

  • 表中各个参数含义如下所示:
    • 目标网络(Destination):目标网段或者主机。
    • 网关(Gateway):网关地址,”*” 表示目标是本主机所属的网络,不需要路由。
    • 网络掩码(Genmask):指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。
    • Flags各个标志的含义如下所示:
      • U:Up,表示此路由当前为启动状态。
      • H:Host,表示对某一个特定的服务器的路由。
      • G:Gateway,表示路由到一个网关。
      • R:Reinstate Route,使用动态路由重新初始化的路由。
      • D:Dynamically,该路由是由重定向报文创建的,并且是通过路由守护程序或导向器动态修改的。
      • !:表示此路由当前为关闭状态。
    • Metric:路由距离,到达指定网络所需的中转数(Linux内核中没有使用)。
    • Ref:路由项引用次数(Linux内核中没有使用)。
    • Use:此路由项被路由软件查找的次数。
    • Iface:该路由表项对应的输出接口。
  • 路由器中的路由选择依据包括目的地址、最长匹配、管理距离(Priority)和度量值(Metric)。其中,路由选择过程如下所示:
    说明:最长匹配是路由查找时,使用路由表中到达同一目的地的子网掩码最长的路由。
    1. 根据目的地址和最长匹配原则进行查找。  
    2. 若有两条或两条以上路由符合,则查看管理距离,不同路由协议的管理距离值不同。管理距离数值越小,优先级越高。    
    3. 当管理距离相同时,会查看度量值。度量值越小,优先级越高。      

适用于

  • 云服务器ECS